package cn.xingzhe.monster.user.domain.service;

/**
 * 认证服务接口
 * 负责用户认证和会话管理
 *
 * @author System
 * @version 1.0.0
 * @since 2024-01-01
 */
public interface AuthenticationService {

    /**
     * 用户登录，创建会话
     *
     * @param userId 用户ID
     * @return 认证Token
     */
    String login(String userId);

    /**
     * 用户退出登录，销毁会话
     *
     * @param userId 用户ID
     */
    void logout(String userId);

    /**
     * 获取当前登录用户的Token
     *
     * @return 认证Token，如果未登录则返回null
     */
    String getCurrentToken();

    /**
     * 获取当前登录用户的ID
     *
     * @return 用户ID，如果未登录则返回null
     */
    String getCurrentUserId();

    /**
     * 检查用户是否已登录
     *
     * @param userId 用户ID
     * @return 是否已登录
     */
    boolean isLoggedIn(String userId);

    /**
     * 检查当前是否有用户登录
     *
     * @return 是否有用户登录
     */
    boolean isCurrentUserLoggedIn();
}
